« | »

2012.02.15

epgrecの録画予約の合計時間を表示させる (転記)

epgrecすごく便利なんだけど、いつのお正月だったかキーワード録画で録り捲っていたらディスクの容量がほぼ満杯になっていた。と、旧「ざったばらん」には書いていた。確かに残量とかは自分で管理するようにって書いてますね。
と言うことでディスクの残量と予約時間の合計の出し方。キーワードで自動録画にしていると結構予約がたまってしまっていったい何時間予約してるのか? そもそもディスク残量は大丈夫なのか時々チェックすれば安心かも:)

予約の合計時間は epgrecの DBにつないで

select sec_to_time(sum(time_to_sec(timediff(endtime,starttime)))) from Recorder_reserveTbl where complete=\'0\';

で hh:mm:ssの形で計算できる。
ディスクの残量は phpで disk_free_space関数を使って epgrecのスプールディレクトリ(録画ファイルを置いているところ)を取って 8~10GB/hで割り算してやれば大体の残量が推定できる。自前で予約時間や残量を表示するページを作ってもかまわないけど面倒なので reservationTable.phpとか、DBアクセスのあるものに埋め込んでおけば予約のチェックをする時に予約時間の合計と残量が一目瞭然で少し便利になる。

diff -c reservationTable.php.orig reservationTable.php
*** reservationTable.php.orig   2009-07-28 23:20:24.000000000 +0900
--- reservationTable.php        2010-01-05 16:11:24.112010447 +0900
***************
*** 2,18 ****
--- 2,37 ----
  include_once(\'config.php\');
  include_once( INSTALL_PATH . \'/DBRecord.class.php\' );
  include_once( INSTALL_PATH . \'/Smarty/Smarty.class.php\' );
+ include_once( INSTALL_PATH . \'/Settings.class.php\' );
+
+ $settings = Settings::factory();
+
+ // 残容量の算出
+       $disk = INSTALL_PATH.$settings->spool;
+       $free_size = sprintf(\"%01.3f\",disk_free_space( $disk )/1024/1024/1024);
+       $remain_1= sprintf(\"%01.2f\", $free_size/8); // 残り時間(1h=8Gbytes)
+       $remain_h = floor( $remain_1 );
+       $remain_m = floor (($remain_1 - $remain_h)*60);
+       $remain_t=sprintf(\"%3d:%02d:00\",$remain_h,$remain_m);

  try{
        $rvs = DBRecord::createRecords(RESERVE_TBL, \"WHERE complete=\'0\' ORDER BY starttime ASC\" );

+ // 録画予約の合計時間を取得する
+       $sqlstr = \"select sec_to_time(sum(time_to_sec(timediff(endtime,starttime)))) from Recorder_reserveTbl where complete=\'0\'\";
+       $result = @mysql_query( $sqlstr );
+       $rtt = mysql_result($result, 0);
+
        $reservations = array();
        foreach( $rvs as $r ) {
+               $ch  = new DBRecord(CHANNEL_TBL, \"id\", $r->channel_id );
                $cat = new DBRecord(CATEGORY_TBL, \"id\", $r->category_id );
                $arr = array();
                $arr[\'id\'] = $r->id;
+               $arr[\'job\'] = $r->job;
                $arr[\'type\'] = $r->type;
                $arr[\'channel\'] = $r->channel;
+               $arr[\'station_name\'] = $ch->name;
                $arr[\'starttime\'] = $r->starttime;
                $arr[\'endtime\'] = $r->endtime;
                $arr[\'mode\'] = $RECORD_MODE[$r->mode][\'name\'];
***************
*** 27,35 ****
        $smarty = new Smarty();
        $smarty->assign(\"sitetitle\",\"録画予約一覧\");
        $smarty->assign( \"reservations\", $reservations );
        $smarty->display(\"reservationTable.html\");
  }
  catch( exception $e ) {
        exit( $e->getMessage() );
  }
! ?>
\\ ファイル末尾に改行がありません
--- 46,56 ----
        $smarty = new Smarty();
        $smarty->assign(\"sitetitle\",\"録画予約一覧\");
        $smarty->assign( \"reservations\", $reservations );
+       $smarty->assign( \"reserv_ttime\", $rtt );
+       $smarty->assign( \"remain_t\", $remain_t );
        $smarty->display(\"reservationTable.html\");
  }
  catch( exception $e ) {
        exit( $e->getMessage() );
  }
! ?>

テンプレートには 予約合計は {$reserv_ttime}、残容量は {$remain_t}で渡しているので適当なところに追加してやればよい。

Trackback URL

Comment & Trackback

No comments.

Comment feed

Comment





XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
:-[ (B) (^) (P) (@) (O) (D) :-S ;-( (C) (&) :-$ (E) (~) (K) (I) (L) (8) :-O (T) (G) (F) :-( (H) :-) (*) :-D (N) (Y) :-P (U) (W) ;-)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)